# Profile Unity application performance on Android devices

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/)
- [Analyzing the sample application](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/1-analyzing/)
- [Preparation](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/2-preparation/)
- [Inside the code](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/3-inside-the-code/)
- [Profiling](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/4-profiling/)
- [Collect performance data](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/5-collect/)
- [Using the Unity Analyzer](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/6-unity-analyzer/)
- [Next Steps](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/_next-steps/)

## About this Learning Path

| Skill level:        | Introductory               |
|---------------------|----------------------------|
| Reading time:       | 40 min                     |
| Last updated:       | 24 Aug 2026                |

| Author:             | Joshua Marshall-Law        |
|---------------------|----------------------------|
| Arm IP:             | [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors) |
| Tags:               | Performance and Architecture, [Android](https://learn.arm.com/tag/android), [Unity](https://learn.arm.com/tag/unity), [csharp](https://learn.arm.com/tag/csharp) |

### Who is this for?
Unity developers wanting to analyze the performance of their apps on Android devices

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Deploy to Android
- Profile code running on an Android device
- Analyze performance data

### Prerequisites
Before starting, you will need the following:
- Recent Android device, such as a mobile phone or tablet
- Desktop computer capable of running Unity
- Basic knowledge of Unity and programming concepts
- The setup described in the Learning Path [Get started with Unity on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/get-started-with-unity-on-android)

### Summary
You’ll deploy a Unity collision sample to an Android device, collect performance data, and compare unoptimized and Arm Neon code. First, you’ll create a URP project, import and deploy the sample, and examine the `Plain`, `Burst`, and `Neon` modes. Then, you’ll use Unity Profiler to record and inspect frames. You’ll also use Profile Analyzer to load, select, and compare the `Plain` and `Neon` recordings.

### Frequently asked questions
<details>
<summary>Do I need to create a new Unity project before importing the sample?</summary>
Yes. In Unity Hub, select **New Project**, select the **3D (URP) Core** template, and create a blank project before you import the sample.
</details>
<details>
<summary>Which tool should I use to examine results?</summary>
Use the Profiler to collect data and inspect specific frames. To use Profile Analyzer, open the Profiler window, load the recording there, and select **Pull Data** to analyze or compare datasets.
</details>
<details>
<summary>Which sample modes should I record for comparison?</summary>
Record the unoptimized `Plain` mode and the optimized `Neon` mode. You can also inspect `Burst` mode to see how its auto-vectorized code differs.
</details>
<details>
<summary>How do I compare the Plain and Neon recordings?</summary>
Compare recordings from the unoptimized `Plain` mode and the optimized `Neon` mode. Use the Profiler and Profile Analyzer to examine differences in frame timing and function execution.
</details>
<details>
<summary>What should I check if the Android device or app doesn't appear for profiling?</summary>
Confirm the app builds and deploys to the Android device using the steps from the [Get started with Unity on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/get-started-with-unity-on-android) Learning Path. After confirming, run the app on the device before recording. If no data appears, re-verify deployment and that the device is actively running the sample.
</details>
